package com.dkd.manage.service.impl;
import java.util.List;

import com.dkd.common.exception.ServiceException;
import com.dkd.common.utils.DateUtils;
import com.dkd.manage.service.ITbChannelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dkd.manage.mapper.TbSkuMapper;
import com.dkd.manage.domain.TbSku;
import com.dkd.manage.service.ITbSkuService;
/**
 * 商品列表Service业务层处理
 *
 * @author ruoyi
 * @date 2024-11-24
 */
@Service
public class TbSkuServiceImpl implements ITbSkuService {
    @Autowired
    private TbSkuMapper tbSkuMapper;
    @Autowired
    private ITbChannelService tbChannelService;
    /**
     * 查询商品列表
     *
     * @param skuId 商品列表主键
     * @return 商品列表
     */
    @Override
    public TbSku selectTbSkuBySkuId(Long skuId) {
        return tbSkuMapper.selectTbSkuBySkuId(skuId);
    }
    @Override
    public TbSku selectTbSkuBySkuName(String skuName) {
        return tbSkuMapper.selectTbSkuBySkuName(skuName);
    }
    /**
     * 查询商品列表列表
     *
     * @param tbSku 商品列表
     * @return 商品列表
     */
    @Override
    public List<TbSku> selectTbSkuList(TbSku tbSku) {
        return tbSkuMapper.selectTbSkuList(tbSku);
    }
    /**
     * 新增商品列表
     *
     * @param tbSku 商品列表
     * @return 结果
     */
    @Override
    public int insertTbSku(TbSku tbSku) {
        tbSku.setCreateTime(DateUtils.getNowDate());
        return tbSkuMapper.insertTbSku(tbSku);
    }
    @Override
    public int insertTbSkuList(List<TbSku> list) {
        return tbSkuMapper.insertTbSkuList(list);
    }
    /**
     * 修改商品列表
     *
     * @param tbSku 商品列表
     * @return 结果
     */
    @Override
    public int updateTbSku(TbSku tbSku) {
        tbSku.setUpdateTime(DateUtils.getNowDate());
        return tbSkuMapper.updateTbSku(tbSku);
    }
    /**
     * 批量删除商品列表
     *
     * @param skuIds 需要删除的商品列表主键
     * @return 结果
     */
    @Override
    public int deleteTbSkuBySkuIds(Long[] skuIds) {
        //1 。 先判断skuIds集合，是否有关联货道
        Integer count = tbChannelService.countChannelBySkuIds(skuIds);
        if (count > 0) {
            throw new ServiceException("次商品已被货道关联，无法删除");
        }
        //2 . 没有关联货道，才能删除
        return tbSkuMapper.deleteTbSkuBySkuIds(skuIds);
    }
    /**
     * 删除商品列表信息
     *
     * @param skuId 商品列表主键
     * @return 结果
     */
    @Override
    public int deleteTbSkuBySkuId(Long skuId) {
        return tbSkuMapper.deleteTbSkuBySkuId(skuId);
    }
}
